package com.sinosoft.sinopay.payrules.facade;

import com.sinosoft.sinocloud.platform.common.exception.biz.SinoBizException;
import com.sinosoft.sinocloud.platform.common.exception.system.SinoSystemException;
import com.sinosoft.sinopay.payrules.dto.MerchantCheckDTO;
import com.sinosoft.sinopay.payrules.dto.MerchantNotifyDTO;
import com.sinosoft.sinopay.payrules.dto.PayChannelCheckDTO;
import com.sinosoft.sinopay.payrules.dto.PayRouteCheckDTO;

import java.util.List;

/**
 * 【支付规则微服务】
 * <p>Description:支付规则微服务 </p>
 *
 * @author bianzb
 * @version 1.0
 * @date 2016-12-09 11:33
 */
public interface PayRuleFacade {
    /**
     * 方法的功能描述：商户支付校验
     * @param merchantCheckDTO
     * @return MerchantCheckDTO
     * @throw SinoBizException,SinoSystemException
     * @author bianzb
     * @version V1.0
     * @date 2016-12-10
     */
    public void checkMerchant(MerchantCheckDTO merchantCheckDTO) throws SinoBizException,SinoSystemException;

    /**
     * 方法的功能描述：支付选择路由
     * @param payRouteCheckDTO
     * @return MerchantPayRouteDTO
     * @throw SinoBizException,SinoSystemException;
     * @author bianzb
     * @version V1.0
     * @date 2016-12-12
     */
    public PayRouteCheckDTO payRoute(PayRouteCheckDTO payRouteCheckDTO) throws SinoBizException,SinoSystemException;

    /**
     * 方法的功能描述：支付渠道校验
     * @param payChannelCheckDTO
     * @return
     * @throw SinoBizException,SinoSystemException
     * @author bianzb
     * @version V1.0
     * @date 2016-12-13
     */
    public void checkPayChannel(PayChannelCheckDTO payChannelCheckDTO) throws SinoBizException,SinoSystemException;

    /**
     * 方法的功能描述：查询商户回调URL
     * @param merchantCode
     * @return List<MerchantNotifyDTO>
     * @throw SinoBizException,SinoSystemException
     * @author bianzb
     * @version V1.0
     * @date 2016-12-22
     */
    public List<MerchantNotifyDTO> queryMerchantNotifyUrl(String merchantCode) throws  SinoBizException,SinoSystemException;
}
